package com.szrt.day20161017;

import org.junit.Test;


/**
 * 1: 简单理解：　类由属性和方法等组成。
 * 	    属性的默认值
 * 
 * 2: this关键字的理解
 * 3： static关键字的理解   
 * 		方法可以直接在类上面调用(也可以在对象上调用。推荐使用在累上调用)
 * 		好处：可以节省性能（可以不需要new 会在内存中开辟2块空间）    偷懒
 * 		重点： 规则： 在1个类中  在static的方法中只能调用static的方法或者属性  反过来就可以。
 * 		重点： 规则： 如何1个属性是static  表示所有的对象都具有相同的东西 只有1份  所有的学生的名字都相同
 * 				  如何1个属性被申明成static 那么怎么赋值： 直接在类.属性名="张无忌"
 * 		where :  经常把Utils工具包里面的方法写成static
 * 4: 构造方法
 * 		构造方法 本质上是1个方法....
 * 		1： 在类里面 只有1个方法有资格大写  就是构造方法 may规则
 * 		2： 构造方法必须与类的名字一样
 * 		3： 构造方法没有返回值  而且连void都不能写
 * 
 * 		构造方法: 就是用来初始化属性 name
 * 
 * 		
 * 		
 * 		
 * 		80%的人都会犯错
 * 5： 方法的重载
 * 6： debug知道执行的先后顺序
 * 
 * 
 *
 */
public class StudentEntity {
	
	
	/*public int StudentEntity(){
		return 0;
	}*/
	
	public StudentEntity(){
		
	}
	
	/**
	 * 属性：直接写在 StudentEntity类 的花括号里面  语法：理解的基础上记忆
	 * 
	 * 属性： 类里面的所有的方法都可以访问
	 * 
	 * 规则：属性必须 私有化 private
	 * 
	 * 
	 */
	private static String name;
	

	/**
	 * 语法：重点： 没有加static的方法只能在对象上对用。
	 * 重点： 规则： 如果我们希望某个方法可以直接在对象上调用  我们只需要在方法的申明上加上关键字static
	 * 		
	 * static 必须写在返回值的前面 
	 * @param money
	 * @return
	 */
	public static boolean jiaoXueFei(int money){
		boolean  flag = true;
		System.out.println(name+",你好。我们已经收到你交来的学费："+money+ "元");
		printWage(8000);
		
		//eat(30);
		
		return flag;
	}
	
	public static void printWage(int wage){
		
		System.out.println("亲,你的工资="+wage);
	}
	
	public static void printName(){
		
		System.out.println("亲,你的名字="+name);
	}
	
	public boolean eat(int money){
		
		//String name;
		jiaoXueFei(18000);
		boolean  flag = true;
		System.out.println(this.name+",你好。我们已经到中餐费："+money+ "元");
		return flag;
	}

	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		
		//this 表明的是当前对象 ：用来区分当属性与局部变量重名的时候 用来区分　王子昂来报到 那么这个this就是 王子昂
		this.name = name;
	}
	
	@Test
	public void staticTest(){
		StudentEntity.name="张无忌";
		StudentEntity.jiaoXueFei(18000);
		StudentEntity.printName();
		
		StudentEntity zs = new StudentEntity();
		StudentEntity li = new StudentEntity();
		zs.printName();
		li.printName();
		
	}
}

